package com.killLog.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/*相应结果的封装类*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result<T> {
    public static final int CODE_OK = 200;//表示成功
    public static final int CODE_ERR_BUSINESS = 500;//表示业务错误
    public static final int CODE_ERR_UNLOGIN = 520;//表示未登录
    public static final int CODE_ERR_SYS = 530;//表示系统错误

    private boolean success; //是否操作成功
    private int code; //状态码：200表示成功、500表示业务错误[用户操作失误导致的错误]、520表示未登录、530表示系统错误
    private String message; //对操作结果的简要描述
    private T data; //向前端响应的数据

    //成功的响应结果方法重载
    /**
     * 无信息无数据的成功响应
     * */
    public static Result<?> OK(){
        return new Result<>(true, CODE_OK, null, null);
    }
    /**
    有信息无数据的成功响应
    */
    public static Result<?>OK(String message){
        return new Result<>(true, CODE_OK, message, null);
    }
    /**
     无信息有数据的成功响应
     */
    public static<T> Result<?>OK(T data){
        return new Result<>(true, CODE_OK, null, data);
    }
    /**
     有信息有数据的成功响应
     */
    public static<T> Result<?>OK(String message,T data){
        return new Result<>(true, CODE_OK, message, data);
    }
    //错误的响应结果方法重载
    /**
    有信息无数据的错误响应
    */
    public static Result<?> error(int errCode, String message){
        return new Result<>(false, errCode, message, null);
    }
    /**
    有信息有数据的错误响应
    */
    public static<T> Result<?> error(int errCode,String message,T data){
        return new Result<>(false, errCode, message, data);
    }


}
